{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CONTENTS\n",
      "1预备知识 8\n",
      "1.1 Python 基础. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8\n",
      "1.1.1列表推导式与条件赋值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8\n",
      "1.1.2匿名函数与 map方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9\n",
      "1.1.3 zip 对象与enumerate 方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10\n",
      "1.2 Numpy 基础. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11\n",
      "1.2.1 np 数组的构造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11\n",
      "1.2.2 np 数组的变形与合并 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14\n",
      "1.2.3 np 数组的切片与索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16\n",
      "1.2.4常用函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17\n",
      "1.2.5广播机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20\n",
      "1.2.6向量与矩阵的计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22\n",
      "1.3练习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24\n",
      "1.3.1 Ex1 ：利用列表推导式写矩阵乘法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24\n",
      "1.3.2 Ex2 ：更新矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24\n",
      "1.3.3 Ex3 ：卡方统计量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25\n",
      "1.3.4 Ex4 ：改进矩阵计算的性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25\n",
      "1.3.5 Ex5 ：连续整数的最大长度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26\n",
      "2 pandas 基础 27\n",
      "2.1文件的读取和写入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27\n",
      "2.1.1文件读取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27\n",
      "2.1.2数据写入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30\n",
      "2.2基本数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31\n",
      "2.2.1 Series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31\n",
      "2.2.2 DataFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32\n",
      "2.3常用基本函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34\n",
      "2.3.1汇总函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34\n",
      "2.3.2特征统计函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36\n",
      "2.3.3唯一值函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37\n",
      "2\n"
     ]
    }
   ],
   "source": [
    "#读取pdf文件\n",
    "import PyPDF2\n",
    "pdfFileObj = open('joyfulpandas.pdf', 'rb')\n",
    "\n",
    "#创建一个pdf阅读器\n",
    "pdfReader = PyPDF2.PdfFileReader(pdfFileObj)\n",
    "#获取第一页的内容\n",
    "pageObj = pdfReader.getPage(1)\n",
    "#打印第一页的内容\n",
    "print(pageObj.extractText())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CONTENTS\n",
      "1预备知识 8\n",
      "1.1 Python 基础. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8\n",
      "1.1.1列表推导式与条件赋值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8\n",
      "1.1.2匿名函数与 map方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9\n",
      "1.1.3 zip 对象与enumerate 方法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10\n",
      "1.2 Numpy 基础. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11\n",
      "1.2.1 np 数组的构造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11\n",
      "1.2.2 np 数组的变形与合并 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14\n",
      "1.2.3 np 数组的切片与索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16\n",
      "1.2.4常用函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17\n",
      "1.2.5广播机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20\n",
      "1.2.6向量与矩阵的计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22\n",
      "1.3练习. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24\n",
      "1.3.1 Ex1 ：利用列表推导式写矩阵乘法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24\n",
      "1.3.2 Ex2 ：更新矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24\n",
      "1.3.3 Ex3 ：卡方统计量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25\n",
      "1.3.4 Ex4 ：改进矩阵计算的性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25\n",
      "1.3.5 Ex5 ：连续整数的最大长度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26\n",
      "2 pandas 基础 27\n",
      "2.1文件的读取和写入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27\n",
      "2.1.1文件读取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27\n",
      "2.1.2数据写入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30\n",
      "2.2基本数据结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31\n",
      "2.2.1 Series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31\n",
      "2.2.2 DataFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32\n",
      "2.3常用基本函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34\n",
      "2.3.1汇总函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34\n",
      "2.3.2特征统计函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36\n",
      "2.3.3唯一值函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37\n",
      "2\n"
     ]
    }
   ],
   "source": [
    "print(pageObj.extractText())"
   ],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
